package com.larosa.practice.domain;

import com.larosa.practice.fruitenum.Fruit;
import com.larosa.practice.strategy.NoPromotionStrategy;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

import java.math.BigDecimal;

import static org.junit.jupiter.api.Assertions.assertEquals;

/**
 * @Author: larosa
 * @Description: 第二个问题的测试类
 * @DateTime: 2025/2/9 11:21
 **/
@SpringBootTest
class SupermarketTest2 {
    /**
     * 2.超市增加了一种水果芒果，其定价为 20 元/斤。现在顾客 B 在超市购买了若干斤苹果、 草莓和芒果，需计算一共需要多少钱？
     * 请编写函数，对于 B 购买的水果斤数 (水果斤数为大于等于 0 的整数)，计算并返回所购买商品的总价。
     *
     * 这个问题是没有促销折扣活动以及满减活动
     */
    @Test
    public void testB() {
        //购买苹果2斤，草莓3斤，芒果2斤  3*8 + 3*13 + 2*20 = 95
        Supermarket supermarket = new Supermarket(new NoPromotionStrategy());//这里采用的是无促销折扣活动策略
        int appleQuantity = 2;//苹果重量
        int strawberryQuantity = 3;//草莓重量
        int mangoQuantity = 2;//芒果重量

        BigDecimal expected = Fruit.APPLE.getPrice().multiply(BigDecimal.valueOf(appleQuantity))
                .add(Fruit.STRAWBERRY.getPrice().multiply(BigDecimal.valueOf(strawberryQuantity)))
                .add(Fruit.MANGO.getPrice().multiply(BigDecimal.valueOf(mangoQuantity)));
        System.out.println("预期花费：" + expected + "元");
        BigDecimal actual = supermarket.calculateTotalPrice(appleQuantity, strawberryQuantity, mangoQuantity);
        System.out.println("实际花费：" + actual + "元");
        assertEquals(expected, actual);
    }
}